"""
Reflex 文件处理
"""

from dataclasses import dataclass

from fastapi import UploadFile

from my_typing import *


@dataclass
class ReflexFile:
    """ Reflex 文件 """

    file: BinaryIO
    """ 文件 """

    name: str
    """ 文件名 """

    size: int
    """ 文件大小（Bit 字节） """

    content_type: str
    """ 文件类型 """

    suffix: str
    """ 文件后缀 """


def parse_reflex_file(file: UploadFile) -> ReflexFile:
    """
    解析 Reflex 上传的文件

    Args:
        file: 文件

    Returns:
        ReflexFile
    """

    file_name: str = file.filename
    suffix: str = ""

    if "." in file_name:
        suffix = file_name.split(".")[-1]

    return ReflexFile(
        file=file.file,
        name=file_name,
        size=int(file.size),
        content_type=file.content_type,
        suffix=suffix,
    )
